//********************************************************************************************************
// Product Name: MapWindow.dll Alpha
// Description:  Low level interfaces that allow separate components to use objects that are defined
//               in completely independant libraries so long as they satisfy the basic interface requirements.
//********************************************************************************************************
// The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 
// you may not use this file except in compliance with the License. You may obtain a copy of the License at 
// http://www.mozilla.org/MPL/ 
//
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
// ANY KIND, either express or implied. See the License for the specificlanguage governing rights and 
// limitations under the License. 
//
// The Original Code is MapWindow.Interfaces
//
// The Initial Developer of this Original Code is Ted Dunsford. Created in August, 2007.
// 
// Contributor(s): (Open source contributors should list themselves and their modifications here). 
//
//********************************************************************************************************
using System;
using System.Collections.Generic;
using System.Text;
using MapWindow.Components.Legend;
namespace MapWindow.Drawing
{
    /// <summary>
    /// Contains all the drawing characteristics to be associated with a point.
    /// It also contains Min, Max and Classification items to help govern
    /// if these drawing characteristics should be applied.
    /// </summary>
    public interface IPointSymbol: IPointSymbolizer, ISymbolRange, ILegendItem, ICloneable
    {

        /// <summary>
        /// Forces the point feature to take on all the properties of this symbol
        /// </summary>
        /// <param name="item">An IPointFeature that will adopt the properties of this Symbol</param>
        void AssignTo(IMapPoint item);

        /// <summary>
        /// Copies all the symbol related properties from a valid IPointFeature.
        /// This only grabs the color schemes and will not actually copy every
        /// property of the object.
        /// </summary>
        /// <param name="feature">The IPointFeature to copy the properties of</param>
        void CopySymbol(IMapPoint feature);

        /// <summary>
        /// Copies all the properties from a valid IPointSymbol
        /// </summary>
        /// <param name="symbol">The IPointSymbol to copy the properties of</param>
        void CopySymbol(IPointSymbol symbol);

        /// <summary>
        /// Copies the symbol related properties of this object to a new IPointFeature
        /// that will have the default values for the non-symbol properties.
        /// </summary>
        /// <returns>A new IPointFeature</returns>
        IMapPoint ToPointFeature();
      



    }
}
